package com.bw.kf.playvideo

/**
 * 评论内容过滤器
 * 用于检测和过滤不当内容
 */
object CommentFilter {
    
    // 敏感词库 - 血腥暴力相关词汇
    private val violentWords = setOf(
        "杀", "死", "血", "暴力", "打架", "砍", "刺", "枪", "刀", "爆炸",
        "恐怖", "残忍", "虐待", "折磨", "屠杀", "谋杀", "自杀", "伤害",
        "攻击", "袭击", "毒品", "吸毒", "赌博", "色情", "裸体", "性",
        "fuck", "shit", "damn", "kill", "die", "blood", "violence", "murder",
        "suicide", "drug", "porn", "sex", "nude", "naked", "terror", "bomb"
    )
    
    // 政治敏感词
    private val politicalWords = setOf(
        "政治", "政府", "领导人", "革命", "抗议", "示威", "政党", "选举",
        "独立", "分裂", "台独", "港独", "藏独", "疆独", "反华", "颠覆"
    )
    
    // 其他不当词汇
    private val inappropriateWords = setOf(
        "傻逼", "白痴", "智障", "脑残", "垃圾", "废物", "滚", "操", "草",
        "妈的", "他妈", "狗", "畜生", "贱", "婊", "屎", "尿", "屁",
        "idiot", "stupid", "fool", "trash", "garbage", "asshole", "bitch"
    )
    
    // 合并所有敏感词
    private val allSensitiveWords = violentWords + politicalWords + inappropriateWords
    
    /**
     * 检查评论内容是否包含敏感词
     * @param content 评论内容
     * @return FilterResult 过滤结果
     */
    fun checkContent(content: String): FilterResult {
        if (content.isBlank()) {
            return FilterResult(false, "评论内容不能为空")
        }
        
        // 检查长度限制
        if (content.length > 500) {
            return FilterResult(false, "评论内容不能超过500字符")
        }
        
        // 转换为小写进行检查
        val lowerContent = content.lowercase()
        
        // 检查是否包含敏感词
        val foundWords = mutableListOf<String>()
        for (word in allSensitiveWords) {
            if (lowerContent.contains(word.lowercase())) {
                foundWords.add(word)
            }
        }
        
        return if (foundWords.isNotEmpty()) {
            FilterResult(false, "评论包含不当内容，请修改后重试")
        } else {
            FilterResult(true, "内容检查通过")
        }
    }
    
    /**
     * 过滤并替换敏感词
     * @param content 原始内容
     * @return 过滤后的内容
     */
    fun filterContent(content: String): String {
        var filteredContent = content
        
        for (word in allSensitiveWords) {
            if (filteredContent.contains(word, ignoreCase = true)) {
                // 用星号替换敏感词
                val replacement = "*".repeat(word.length)
                filteredContent = filteredContent.replace(word, replacement, ignoreCase = true)
            }
        }
        
        return filteredContent
    }
    
    /**
     * 添加自定义敏感词
     * @param words 要添加的敏感词列表
     */
    fun addCustomWords(words: List<String>) {
        // 这里可以实现动态添加敏感词的功能
        // 实际项目中可能需要从服务器获取最新的敏感词库
    }
}

/**
 * 过滤结果数据类
 */
data class FilterResult(
    val isValid: Boolean,  // 是否通过检查
    val message: String    // 结果消息
)